package com.jay.registry;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 本地注册中心
 * 用于在本地存储和服务注册信息，以便在服务提供者和服务消费者之间进行服务发现和调用
 */
public class LocalRegistry {

    /**
     * 注册信息存储
     * 使用ConcurrentHashMap来存储服务名和服务实现类的映射关系，保证线程安全
     */
    private static final Map<String, Class<?>> map = new ConcurrentHashMap<>();

    /**
     * 注册服务
     * 将服务名和对应的实现类映射到map中，以便其他服务消费者可以发现和调用该服务
     *
     * @param serviceName 服务名，作为服务的唯一标识
     * @param implClass   服务实现类，指定服务的具体实现
     */
    public static void register(String serviceName, Class<?> implClass) {
        map.put(serviceName, implClass);
    }

    /**
     * 获取服务
     * 根据服务名从map中查找并返回对应的服务实现类
     *
     * @param serviceName 服务名，用于查找服务实现类
     * @return 对应的服务实现类，如果找不到则返回null
     */
    public static Class<?> get(String serviceName) {
        return map.get(serviceName);
    }

    /**
     * 删除服务
     * 从map中移除指定服务名对应的服务实现类，用于服务下线或更新
     *
     * @param serviceName 服务名，指定要删除的服务
     */
    public static void remove(String serviceName) {
        map.remove(serviceName);
    }
}
